package cn.iocoder.yudao.module.crossborder.risk.service;

import cn.iocoder.yudao.module.crossborder.risk.api.dto.ComplianceCheckDTO;
import cn.iocoder.yudao.module.crossborder.risk.api.dto.FraudDetectionDTO;
import cn.iocoder.yudao.module.crossborder.risk.api.dto.RiskAssessmentDTO;
import cn.iocoder.yudao.module.crossborder.risk.api.dto.RiskAssessmentReqDTO;

/**
 * 风险管理 Service 接口
 *
 * @author LHL
 */
public interface RiskService {

    /**
     * 风险评估
     *
     * @param assessmentReq 评估请求
     * @return 评估结果
     */
    RiskAssessmentDTO assessRisk(RiskAssessmentReqDTO assessmentReq);

    /**
     * 获得风险评估记录
     *
     * @param id 编号
     * @return 风险评估记录
     */
    RiskAssessmentDTO getRiskAssessment(Long id);

    /**
     * 欺诈检测
     *
     * @param userId 用户编号
     * @param orderId 订单编号
     * @return 检测结果
     */
    FraudDetectionDTO detectFraud(Long userId, Long orderId);

    /**
     * 合规检查
     *
     * @param businessType 业务类型
     * @param businessId 业务编号
     * @return 检查结果
     */
    ComplianceCheckDTO checkCompliance(String businessType, Long businessId);

    /**
     * 添加黑名单
     *
     * @param type 类型
     * @param value 值
     * @param reason 原因
     * @return 是否成功
     */
    Boolean addBlacklist(String type, String value, String reason);

    /**
     * 移除黑名单
     *
     * @param type 类型
     * @param value 值
     * @return 是否成功
     */
    Boolean removeBlacklist(String type, String value);

    /**
     * 检查黑名单
     *
     * @param type 类型
     * @param value 值
     * @return 是否在黑名单中
     */
    Boolean checkBlacklist(String type, String value);

}
